package com.guigu.gulicommon.constant.enumes.order;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import com.guigu.gulicommon.api.BaseDataEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 支付类型
 *
 * @author 陈俊杰
 * @version 1.0
 * @since 2024/8/15 19:30
 */
@Getter
@AllArgsConstructor
public enum PayTypes implements BaseDataEnum {
    /**
     * PAYPAL 中国
     */
    PAYPAL_CHINA(101, "PAYPAL中国"),
    /**
     * PAYPAL 香港
     */
    PAYPAL_HONGKONG(102, "PAYPAL香港"),
    /**
     * PAYPAL 全球
     */
    PAYPAL_GLOBAL(103, "PAYPAL全球"),
    /**
     * 支付宝
     */
    ALIPAY(201, "支付宝"),
    /**
     * 支付宝香港
     */
    ALIPAY_HONGKONG(202, "支付宝香港"),
    /**
     * 支付宝全球
     */
    ALIPAY_GLOBAL(203, "支付宝全球"),
    /**
     * 微信
     */
    WECHAT(301, "微信"),
    /**
     * 微信香港
     */
    WECHAT_HONGKONG(302, "微信香港"),
    /**
     * 微信全球
     */
    WECHAT_GLOBAL(303, "微信全球"),
    /**
     * 银联
     */
    UNION_PAY(401, "银联"),
    /**
     * 货到付款
     */
    CASH_ON_DELIVERY(501, "货到付款"),
    ;
    /**
     * 数据库存储的值
     */
    @EnumValue
    private final Integer code;
    /**
     * 显示给用户的值
     */
    @JsonValue
    private final String name;

    /**
     * 通过code得到枚举
     *
     * @param code 插入数据库的值
     * @return 枚举
     */
    @Override
    public BaseDataEnum getEnumByCode(Integer code) {
        for (PayTypes value : PayTypes.values()) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        return null;
    }

    /**
     * 通过name得到枚举
     *
     * @param name 显示的值
     * @return 枚举
     */
    @Override
    public BaseDataEnum getEnumByName(String name) {
        for (PayTypes value : PayTypes.values()) {
            if (value.getName().equals(name)) {
                return value;
            }
        }
        return null;
    }
}
